/*

面向对象编程 

对象
    问题 如何让学生登录
    属性    学生的账号   学生的密码
    方法    登录

stm32  C++
stm32 -->  迭代到可以使用C++
*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>

// 函数指针
typedef bool ( * log_in)(char *  , char * );

typedef struct 
{
    // 属性
    char user[128];
    char pass[128];

    // 方法
    log_in func; // 函数指针
}stu_data;



bool log_in_func(char * my_user , char *  my_pass)
{
    // 从用户输入
    char user[128];
    char pass[128];

    scanf("%s" , user);
    scanf("%s" , pass);

    if ((!strcmp(my_user , user)) && (!strcmp(my_pass , pass)))
    {
        printf("登录成功\n");
    }
    
}


stu_data * stu_init(char * user , char *  pass)
{
    stu_data * data = (stu_data *)malloc(sizeof(stu_data));

    if (NULL == data)
    {
        printf("创建动态内存失败\n");
        exit(-1);
    }
    
    // 初始化数据
    strcpy(data->user , user );
    strcpy(data->pass , pass );

    // 指向一个函数
    data->func = log_in_func;
}

int main(int argc, char const *argv[])
{
    stu_data * ptr = stu_init("张三" , "1");


    // 需要调用登录
    ptr->func(ptr->user , ptr->pass);


    return 0;


}
